package com.frank.service.test3;

import java.io.IOException;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.concurrent.atomic.AtomicInteger;

/**
 * @Author: huweifeng
 * @Date: 2024/12/12
 * @Description: 测试遍历文件
 **/
public class TestFilesWalkFileTree {
    public static void main(String[] args) throws IOException {
        // 要访问的目录
        Path path = Paths.get("C:\\Users\\Administrator\\Desktop\\工作相关\\项目-汇耀");
        // 文件夹个数
        AtomicInteger dirCount = new AtomicInteger();
        // 文件个数
        AtomicInteger fileCount = new AtomicInteger();
        // 开始遍历
        Files.walkFileTree(path, new SimpleFileVisitor<Path>(){
            // 访问文件夹之前做的操作
            @Override
            public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
                System.out.println("=====>进入文件夹之前：" + dir);
                dirCount.incrementAndGet();
                return super.preVisitDirectory(dir, attrs);
            }

            // 遍历到文件的操作
            @Override
            public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
                System.out.println("----->遍历的文件：" + file);
                fileCount.incrementAndGet();
                return super.visitFile(file, attrs);
            }

        });
        System.out.println(">>>总文件夹个数：" + dirCount);
        System.out.println(">>>总文件个数：" + fileCount);
    }
}
